package Dominio;

import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.sql.Blob;
import java.util.List;
import javax.imageio.ImageIO;
import org.hibernate.Hibernate;
import Persistencia.AgenteBD;

public class Articulo {
	private int ref;
	private String descripcion;
	private String nombre;
	private Blob imagen;
	private float precio;
	private int cantidad;
	
	//Constructores para crearArticulo
	public Articulo() {
		super();
	}
	public Articulo(int ref) {
		super();
		this.ref = ref;
	}
	public Articulo(String nombre, float precio, int cantidad,String  descripcion) {
		super();
		this.nombre = nombre;
		this.precio = precio;
		this.cantidad = cantidad;
		this.imagen=null;
	}
	
	public int getRef() {
		return ref;
	}
	public void setRef(int ref) {
		this.ref = ref;
	}
	public String getDescripcion() {
		return descripcion;
	}
	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}


	public Blob getImagen() {
		return imagen;
	}
	public void setImagen(Blob imagen) {
		this.imagen = imagen;
	}
	public float getPrecio() {
		return precio;
	}
	public void setPrecio(float precio) {
		this.precio = precio;
	}
	public int getCantidad() {
		return cantidad;
	}
	public void setCantidad(int cantidad) {
		this.cantidad = cantidad;
	}

	
	public static int crearArticulo(String nom,float pre,int cant,String desc,String rut){
		int res=0;
		Articulo a = new Articulo(nom,pre,cant,desc);
		a.setDescripcion(desc);
		if(rut.equals("")){
			a.setImagen(null);
		}
		else{
			
			try {
				File f = new File(rut);
				BufferedImage img = ImageIO.read(f);
				ByteArrayOutputStream bas =	new ByteArrayOutputStream();
				ImageIO.write(img, rut.substring(rut.lastIndexOf('.')+1,rut.length()), bas);
				byte[] data = bas.toByteArray();
				Blob b=Hibernate.createBlob(data);
				a.setImagen(b);
			} catch (Exception e) {
				e.printStackTrace();
				System.out.println("Error al crear la IMAGEN ======");
			}
			
		}
	
		res=AgenteBD.crearArticuloBD(a);
		return res;
	}
	public static List<Articulo> consultarArticulos(){
		//Devolver una lista de todos los articulos
		//Devolver NULL en caso de fallo
		List<Articulo> articulos=AgenteBD.consultarArticulosBD();
		return articulos;
	}
	public static Articulo consultarArticuloReferencia(int re){
		//Devolver el articulo cuya referencia sea ref
		Articulo articulo = AgenteBD.consultarArticuloBD(re);
		return articulo;
	}
	public static int modificarArticulo(int re,String nom,float pre,int cant,String desc,String rut){
		int res=0;
		Articulo a = AgenteBD.consultarArticuloBD(re);
		a.setNombre(nom);
		a.setPrecio(pre);
		a.setCantidad(cant);
		a.setDescripcion(desc);
		if(rut.equals("")){
			
		}
		else{
			
			try {
				File f = new File(rut);
				BufferedImage img = ImageIO.read(f);
				ByteArrayOutputStream bas =	new ByteArrayOutputStream();
				ImageIO.write(img, rut.substring(rut.lastIndexOf('.')+1,rut.length()), bas);
				byte[] data = bas.toByteArray();
				Blob b=Hibernate.createBlob(data);
				a.setImagen(b);
			} catch (Exception e) {
				e.printStackTrace();
				System.out.println("Error al crear la IMAGEN ======");
			}
		}
		res=AgenteBD.modificarArticuloBD(a);
		
		return res;
	}
	public static int borrarArticulo(int re){
		int res=0;
		Articulo a = AgenteBD.consultarArticuloBD(re);
		res=AgenteBD.borrarArticuloBD(a);
		return res;
	}
	
}

